package com.dupt.system.mapper;

import java.util.List;
import com.dupt.system.domain.MaterialSerial;
import com.dupt.system.domain.vo.MaterialSerialVo;

/**
 * 物料序列号Mapper接口
 * 
 * @author zhuanyu.sun
 * @date 2025-08-26
 */
public interface MaterialSerialMapper
{
    /**
     * 查询物料序列号
     * 
     * @param materialSerialId 物料序列号主键
     * @return 物料序列号
     */
    public MaterialSerial selectMaterialSerialByMaterialSerialId(Long materialSerialId);

    /**
     * 查询物料序列号列表
     * 
     * @param materialSerial 物料序列号
     * @return 物料序列号集合
     */
    public List<MaterialSerial> selectMaterialSerialList(MaterialSerial materialSerial);

    /**
     * 新增物料序列号
     * 
     * @param materialSerial 物料序列号
     * @return 结果
     */
    public int insertMaterialSerial(MaterialSerial materialSerial);

    /**
     * 修改物料序列号
     * 
     * @param materialSerial 物料序列号
     * @return 结果
     */
    public int updateMaterialSerial(MaterialSerial materialSerial);

    /**
     * 删除物料序列号
     * 
     * @param materialSerialId 物料序列号主键
     * @return 结果
     */
    public int deleteMaterialSerialByMaterialSerialId(Long materialSerialId);

    /**
     * 批量删除物料序列号
     * 
     * @param materialSerialIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMaterialSerialByMaterialSerialIds(Long[] materialSerialIds);

    /**
     * 批量更新物料序列号**
     * 批量更新物料序列号
     *
     * @param materialSerialList 需要更新的数据主键集合
     * @return 结果
     */
    public int batchUpdateMaterialSerial(List<MaterialSerial> materialSerialList);

    /**
     * 查询物料序列号列表
     *
     * @param serialNo 物料序列号
     * @return 物料序列号集合
     */
    List<MaterialSerial> selectMaterialSerialBySerialNo(String serialNo);

    /**
     * 批量插入物料序列号**
     * 批量插入物料序列号
     *
     * @param materialSerialList 需要插入的数据主键集合
     * @return 结果
     */
    public void batchInsertMaterialSerial(List<MaterialSerial> materialSerialList);

    /**
     * 根据物料明细ID查询物料序列号列表
     *
     * @param materialDetialId 物料明细ID
     * @return 物料序列号集合
     */
    public List<MaterialSerial> selectMaterialSerialByMaterialDetialId(String materialDetialId);

    /**
     * 根据物料序列号ID查询物料序列号列表
     *
     * @param materialSerialIds 物料序列号ID
     * @return 物料序列号集合
     */
    public List<MaterialSerial> selectMaterialSerialByMaterialSerialIds(Long[] materialSerialIds);
    /**
     * 根据物料序列号ID查询物料序列号列表
     *
     * @param materialDetialIds 物料序列号ID
     * @return 物料序列号集合
     */
    public List<MaterialSerial> selectMaterialSerialByMaterialDetialIds(List<String> materialDetialIds);

    /**
     * 根据物料收集ID查询物料序列号列表
     *
     * @param materialCollectId 物料收集ID
     * @return 物料序列号集合
     */
    public List<MaterialSerialVo> receiveSearchMaterialByMaterialCollectId(Long materialCollectId);

    /**
     * 根据组装用料ID查询物料序列号列表
     *
     * @param assembleMaterialId 组装用料ID
     * @return 物料序列号集合
     */
    List<MaterialSerialVo> sendBackSearchMaterialSerialByAssembleMaterialId(Long assembleMaterialId);
}
